package com.example.administrator.yunniuusedcar.model.protocol;

import com.example.administrator.yunniuusedcar.model.mode_benn.Home;
import com.example.administrator.yunniuusedcar.model.mode_benn.IHttpService;
import java.util.HashMap;
import java.util.Map;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import static com.example.administrator.common.base.Global.showToast;

/**
 * Created by Administrator on 2017/12/12.
 *
 */

public class CommonProtocol extends BaseProtocol {

    /** 列表下拉：需要重置列表数据 */
    public static final int PULL_DOWN = 0;
    /** 列表上拉：追加列表数据 */
    public static final int PULL_UP = 1;

//    /** 请求首页数据 */
//    public void getHome(final IHttpCallback callback) {
//        super.enqueue(super.getService().getHome(),
//                callback, IHttpService.HTTP_HOME, Home.class);
//    }

    /** 请求订单列表 */
//    public void getOrderList(final IHttpCallback callback,
//                             String token, String username) {
//        super.enqueue(super.getService().orderList(token, username),
//                callback, IHttpService.HTTP_ORDER_LIST, OrderList.class);
//    }
//
//    /** 登录 */
//    public void login(final IHttpCallback callback, String phone) {
//        super.enqueue(super.getService().login(1, phone),
//                callback, IHttpService.HTTP_LOGIN, Login.class);
//    }
//
//    /** 创建订单 */
//    public void createOrder(final IHttpCallback callback, String orderInfo) {
//        super.enqueue(super.getService().createOrder(orderInfo),
//                callback, IHttpService.HTTP_CREATE_ORDER, OrderResult.class);
//    }
//
//    /** 登录 */
//    public void login(final IHttpCallback callback, String username, String password) {
//        super.enqueue(super.getService().login(0, username, password),
//                callback, IHttpService.HTTP_LOGIN, Login.class);
//    }

    /** 请求车商家列表数据 */
    public void getShopList(final IHttpCallback callback,
                            final int pageNo,
                            final int pageCount,
                            final int categoryId,
                            final int orderBy,
                            final String keyword) {
        Map<String, Object> map = new HashMap<String, Object>();        // 指定post请求的参数
//        map.put("latitude", 23d);
//        map.put("longitude", 113d);

        map.put("pageNo", pageNo);             // 获取第几页数据
        map.put("pageCount", pageCount);       // 每页10条数据
        map.put("categoryId", categoryId);     // 商家类别
        map.put("orderBy", orderBy);           // 排序条件
        map.put("keyword", keyword);           // 查询关键字

        // 如果请求的是第一页数据，则表示下拉操作，需要重置列表数据
//        int what = (pageNo == 1) ? PULL_DOWN : PULL_UP;
//        super.enqueue(super.getService().getShopList(map),
//                callback, IHttpService.HTTP_SHOP_LIST, ShopList.class, what);
    }

    /**
     * @param callback
     * @param pageNo 请求第几页数据
     * @param pageCount 每页多少条
     */
    public void getShopList(final IHttpCallback callback, int pageNo, int pageCount) {
        getShopList(callback, pageNo, pageCount, 0, 0, "");
    }

    /**
     * 获取商家详情数据
     *
     * @param callback
     * @param shopId 商家id
     */
//    public void getShopDetail(final IHttpCallback callback, String shopId) {
//        super.enqueue(super.getService().getShopDetail(shopId),
//                callback, IHttpService.HTTP_SHOP_DETAIL, ShopDetail.class);
//    }

    // 以下是测试 时用的 假数据
//    private Retrofit retrofit;
//    private IRetrofitAPI retrofitAPI;
//
//    public CommonProtocol() {
//        retrofit = new Retrofit
//                .Builder()
//                .baseUrl(IRetrofitAPI.HOST_URL)
//                // 使用gson解析json字符串
//                .addConverterFactory(GsonConverterFactory.create())
//                .build();
//
//        // 获取Retrofit接口
//        retrofitAPI = retrofit.create(IRetrofitAPI.class);
//    }
//
//    /** 获取首页数据 */
//    public void getHomeData(final HttpCallback callback) {
//        // 调用方法，请求服务器数据
//        Call<JsonObject> call = retrofitAPI.getHome();
//
//        // 同步调用
//        // call.execute();
//        // 异步调用
//        call.enqueue(new Callback<JsonObject>() {
//            @Override
//            public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
//                try {
//
//                    // 获取服务器返回的json字符串
//                    String json = response.body().toString();
//                    System.out.println("----json: " + json);
//
//                    // 手动解析json字符串
//                    JSONObject jsonObject = new JSONObject(json);
//                    int status = jsonObject.getInt("status");
//                    if (status == 0) {      // 请求服务器成功(状态码为0表示请求成功)
//
//                        Gson gson = new Gson();
//                        Home home = gson.fromJson(json, Home.class);
//
//                        // 网络请求成功的回调
//                        if (callback != null) {
//                            callback.onHttpSuccess(IRetrofitAPI.HTTP_HOME, home);
//                        }
//
//                    } else {                // 请求服务器失败
//                        // 获取请求失败原因
//                        String error = jsonObject.getString("error");
//
//                        // 网络请求失败的回调
//                        if (callback != null) {
//                            callback.onHttpError(IRetrofitAPI.HTTP_HOME, error);
//                        }
//                    }
//
//                } catch(Exception e) {
//                    e.printStackTrace();
//
//                    if (callback != null) { // 网络请求失败的回调
//                        callback.onHttpError(IRetrofitAPI.HTTP_HOME, e.getMessage());
//                    }
//                }
//            }
//
//            @Override
//            public void onFailure(Call<JsonObject> call, Throwable t) {
//                showToast("请求出错：" + t.getMessage());
//            }
//        });
//    }
//
//    /**
//     * 网络请求回调接口
//     */
//    public interface HttpCallback {
//        /**
//         * 网络请求成功
//         *
//         * @param reqType 调用的是哪一个接口
//         * @param obj 服务器返回javabean对象
//         */
//        void onHttpSuccess(int reqType, Object obj);
//        /**
//         * 网络请求失败
//         *
//         * @param reqType 调用的是哪一个接口
//         * @param error 请求出错提示信息
//         */
//        void onHttpError(int reqType, String error);
//    }

}
